This invention relates generally to communication systems, and more particularly to a soft output decoder for use in a receiver of a convolutional code communication system.
Convolutional codes are often used in digital communication systems to protect transmitted information from error. At the transmitter, an outgoing code vector may be described using a trellis diagram whose complexity is determined by the constraint length of the encoder. Although computational complexity increases with increasing constraint length, the robustness of the coding also increases with constraint length.
At the receiver, a practical soft-decision decoder, such as a Viterbi decoder as is known in the art, uses the trellis structure to perform an optimum search for the maximum likelihood transmitted code vector. The Viterbi algorithm, however, is computationally complex, and its complexity increases exponentially with increasing constraint length. This essentially means that a Viterbi decoder requires a significant amount of memory and processing power for convolutional codes with large constraint lengths.
More recently, turbo codes have been developed for various communications systems, such as Direct Sequence Code Division Multiple Access (DS-CDMA) standard IS-95 and Global System for Mobile Communications (GSM), that outperform conventional coding techniques. Turbo coding is efficiently utilized to correct errors in the case of communicating over an added white Gaussian noise (AWGN) channel. Turbo codes are generally composed of two or more convolutional codes and turbo interleavers. Turbo decoding is iterative and uses a soft output decoder to decode the individual convolutional codes. The soft output decoder provides information on each bit position which helps the soft output decoder decode the convolutional codes. The soft output decoder is usually a MAP (maximum a posteriori) or soft output Viterbi algorithm (SOVA) decoder which requires backward and forward recursion decoding to determine the soft output over the block as is known in the art.
A direct implementation of MAP-based Turbo decoder requires a large memory for the storage of the recursive sequences. For example, in future standards such as the 3GPP (third generation partnership project for wireless systems), an 8-state turbo code with a block length of N=5120, needs 40960 words of intermediate storage which may be unacceptable. Any additional capabilities in future systems will require even more memory due to a larger frame and greater number of states.
Sliding window techniques have been proposed to reduce the amount of memory with the introduction of extra computation. This is the typical trade off between memory and computation. In particular, the sliding block technique divides a block of code into windows and operates on only one window at a time and outputting the code for that window. In this way a smaller sized memory is needed. However, an additional learning computation is needed for each window in order to determine the correct states at either end of the window for proper decoding. Therefore, the sliding window technique uses less memory, but with additional computations.
There is a need for an improvement to the sliding window technique of turbo decoding that retains the minimized memory requirement while reducing overall processing requirements for decoding convolutional codes without sacrificing performance. There is also a need to provide decoding capability in a portable radio communication device while reducing power consumption. In particular, it is desirable to reduce the number of iterations to save calculation time and circuit power.